body {
    /* background: #f2f2f2; */
    background: #282c34;
}

.frame {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 400px;
    height: 400px;
    margin-top: -200px;
    margin-left: -200px;
    border-radius: 2px;
    box-shadow: 1px 2px 10px 0px rgba(0, 0, 0, 0.3);
    overflow: hidden;
    background: #edf1f4;
    font-family: 'Open Sans', Helvetica, sans-serif;
}

.center {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
}

.col {
    box-sizing: border-box;
    position: relative;
    width: 30px;
    height: 150px;
    margin: 15px;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0.05), #edf1f4);
    border-radius: 30px;
    border: 1px solid #edf1f4;
    box-shadow: 15px 15px 20px rgba(0, 0, 0, 0.1), -15px -15px 20px #fff,
        inset -5px -5px 5px rgba(255, 255, 255, 0.5),
        inset 5px 5px 5px rgba(0, 0, 0, 0.05);
    overflow: hidden;

    &:before {
        content: '';
        position: absolute;
        z-index: 10;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        border-radius: 40px;
        box-shadow: 15px 15px 20px rgba(0, 0, 0, 0.1), -15px -15px 20px #fff,
            inset -5px -5px 5px rgba(255, 255, 255, 0.5),
            inset 5px 5px 5px rgba(0, 0, 0, 0.05);
    }

    &:after {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        width: 28px;
        height: 28px;
        background: #fff;
        border-radius: 50%;
        box-shadow: inset -5px -5px 5px rgba(255, 255, 255, 0.2),
            0 415px 0 400px #2196f3;
        animation: flow 2.5s ease-in-out infinite;
        animation-delay: calc(-0.5s * var(--i));
    }
}

@keyframes flow {
    0% {
        transform: translateY(120px);
        filter: hue-rotate(180deg);
    }
    50% {
        transform: translateY(0);
    }
    100% {
        transform: translateY(120px);
        filter: hue-rotate(0deg);
    }
}
